{{tag>réseau BROUILLON}}

----

====== Wake on LAN : réveil de l'ordinateur via le réseau ======

<note important>Les informations données ici semblent partiellement erronées ou superflues consultez en priorité la page [[wakeonlan]]</note>


==== Définition =====

Le Wake-on-LAN (WOL) ou mise en marche du PC depuis le réseau est une technologie développée par AMD et IBM, permettant à un ordinateur mis en veille d'être démarré à distance par l'envoi d'un « magic-packet » sur la carte réseau  supportant le Wake-on-LAN. 

Sur les ordinateurs récents, l'arrêt complet de l'ordinateur est possible. En effet, l'alimentation est toujours présente et la carte-mère est généralement en veille. D'ailleurs un voyant près du connecteur réseau signale la présence d'une activité, même ordinateur éteint.

  * Ubuntu dispose de 2 paquets pour gérer la fonction WOL : [[etherwake]], [[wakeonlan]]
  * Vous aurez besoin d'une station de contrôle pour piloter le réveil d'un ordinateur distant (a priori sur votre réseau local), sur laquelle vous installerez l'un de ces 2 paquets,
  * Pour réveiller l'ordinateur distant, il faut connaître son adresse MAC.
  * Sur l'ordinateur distant, il faut configurer le BIOS pour que la fonction WOL (Wake-on-LAN) soit activée, pas de logiciel supplémentaire a installer,

===== Mise en oeuvre =====
==== Paramétrage du BIOS ====
Pour que le WOL soit possible il faut **activer** l'option correspondante dans votre bios. Suivant la version/fabricant de votre BIOS l'option se nomme différemment : Power On PCI, Wake On Network,...


==== Paramétrage de la carte réseau ====
Il faut maintenant paramétrer la carte réseau pour qu'elle réagisse au signal "Wake-on-lan" qu'on appelle aussi paquet "magique" (magic packet).

Sous GNU/linux lors de l'extinction, le système désactive les interfaces réseaux.

<note help>La page [[wakeonlan]] semble beaucoup plus claire et suffisante pour faire marcher le WOL, consultez la avant d'essayez les choses proposées ci-dessous. En cas d'échec de tout le reste vous pourrez toujours revenir sur cette page...</note>

=== Méthode pour éviter la désactivation du WOL ===
Testée avec Feisty, fonctionne sous Gusty

<note help>Les modifs ci-dessous sont largement superflues ; en particulier la commande ''ethtool'' est rajoutée à de multiples endroits où elle est parfaitement inutile ; visiblement celui qui a proposé ce script l'a mise partout au petit bonheur sans savoir où elle serait utile. Tout ceci n'est en particulier d'aucune utilité sous Intrepid.</note>

Il semble qu'on puisse ne modifier qu'un seul fichier pour avoir un Wake On Lan qui fonctionne. Comme les pilotes de cartes réseau ont tendance, en se chargeant, à désactiver le WOL, nous allons tout simplement activer le WOL sur n'importe quel évènement réseau, que ce soit ''start'', ''stop'', ''restart'' ou ''force-reload''.

Pour cela, éditons /etc/init.d/networking :
    sudo gedit /etc/init.d/networking

Et ajoutons ''ethtool -s eth0 wol g'' à la fin de chaque fonction (attention, votre carte réseau n'est peut-être pas identifiée sous eth0 mais eth1, pensez à faire la modification dans les commandes. Afin de savoir, tapez dans un terminal: ifconfig vous aurez descriptif des interfaces réseau en service sur votre machine), ce qui donne :

    #!/bin/sh -e
    ### BEGIN INIT INFO
    # Provides:          networking
    # Required-Start:    mountkernfs ifupdown $local_fs
    # Required-Stop:     ifupdown $local_fs
    # Default-Start:     S
    # Default-Stop:      0 6
    ### END INIT INFO
    
    PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin"
    
    [ -x /sbin/ifup ] || exit 0
    
    . /lib/lsb/init-functions
    
    
    case "$1" in
    start)
            log_action_begin_msg "Configuring network interfaces"
            type usplash_write >/dev/null 2>/dev/null && usplash_write "TIMEOUT 120" || true
            if [ "$VERBOSE" != no ]; then
                if ifup -a; then
                    log_action_end_msg $?
            else
                    log_action_end_msg $?
                fi
            else
                if ifup -a >/dev/null 2>&1; then
                    log_action_end_msg $?
                else
                    log_action_end_msg $?
                fi
            fi
            type usplash_write >/dev/null 2>/dev/null && usplash_write "TIMEOUT 15" || true
            #ajout ici!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
            ethtool -s eth0 wol g
            ;;
    
    stop)
            if sed -n 's/^[^ ]* \([^ ]*\) \([^ ]*\) .*$/\2/p' /proc/mounts |
                    grep -qE '^(nfs[1234]?|smbfs|ncp|ncpfs|coda|cifs)$'; then
                log_warning_msg "not deconfiguring network interfaces: network shares still mounted."
            #ajout ici!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
            ethtool -s eth0 wol g
                exit 0
            fi
    
            log_action_begin_msg "Deconfiguring network interfaces"
            if [ "$VERBOSE" != no ]; then
                if ifdown -a --exclude=lo; then
                    log_action_end_msg $?
                else
                    log_action_end_msg $?
                fi
            else
                if ifdown -a --exclude=lo >/dev/null 2>/dev/null; then
                    log_action_end_msg $?
                else
                    log_action_end_msg $?
                fi
            fi
            #ajout ici!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
            ethtool -s eth0 wol g
            ;;
    
    force-reload|restart)
            log_action_begin_msg "Reconfiguring network interfaces"
            ifdown -a --exclude=lo || true
            if ifup -a --exclude=lo; then
                log_action_end_msg $?
            else
                log_action_end_msg $?
            fi
            #ajout ici!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
            ethtool -s eth0 wol g
            ;;
    
    *)
            echo "Usage: /etc/init.d/networking {start|stop|restart|force-reload}"
            #ajout ici!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
            ethtool -s eth0 wol g
            exit 1
            ;;
    esac
    #ajout ici!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
            ethtool -s eth0 wol g
    exit 1

Et voilà ! Que le réseau soit démarré, arrêté, redémarré ou rechargé, le wol sera réactivé, ce qui lui permet notamment de rester activé à l'arrêt de l'ordinateur. 

=== Alternative ===

FIXME si quelqu'un a testé avec succès merci de remettre un peu d'ordre ci-dessous...

Editez
    sudo gedit /etc/network/interfaces
ajoutez
    pre-down /usr/sbin/ethtool -s eth0 wol g

puis pour l'extinction:

<note help>Sous Intrepid, les modifications ci-dessous de "''halt''" sont inutiles, puisque le script "''halt''" d'origine le prévoit déjà à l'identique, mais avec le nom de variable NETDOWN. On obtient donc le résultat équivalent en mettant simplement NETDOWN="no" dans ''/etc/default/halt''.</note>

éditez
    sudo gedit /etc/default/halt
et ajoutez
    WOL=1

puis éditez
    sudo gedit /etc/init.d/halt

Juste avant la ligne
    log_action_msg "Will now halt"

ajoutez
    # dont shut interfaces down if WOL=1
    wol="-i"
    if [ "$WOL" = "1" ]
    then
        wol=""
    fi
Puis remplacez la ligne
    halt -d -f -i $poweroff $hddown
par :
    halt -d -f $wol $poweroff $hddown

Voilà, il y a peut-être des choses en double ou il y a peut-être plus simple/facile/optimisé, mais je pense que cette méthode marche pas mal.
Peut-être à mettre sur le wiki, mais j'ai pas encore regardé comment faire, ni même si c'est assez complet pour l'y faire figurer...
enfin d'ici la, bon wol.
Pitch ;)

FIXME

<note>Notes aux rédacteurs :
  * Cette fin de page serait à réviser.
</note>

----

//Contributeurs : Dwan, Hipopo, [[utilisateurs/Mysteroïd]].//